{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Eliminate from (general) A to (upper triangular) U"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Demonstrate Gaussian Elimination (page 51 of GS)\n",
    "\n",
    "(Reminder: Julia programming syntax will not be tested in this class, but that doesn't mean you can't learn from watching the code being executed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "using Plots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "lookat (generic function with 1 method)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# nice viz for matrices\n",
    "function lookat(A; redrow=0, rounding=2, showtext=true)\n",
    "  n = size(A,1)\n",
    "  plot(legend=false, axis=false)\n",
    "  rowcolor = redrow > 0 ? :red : :black  \n",
    "  for i=1:n, j=1:n  \n",
    "      scatter!( [j],[i], ann=  showtext ? (j,i,round(A[i,j],digits=rounding), :white ) : (j,i,\"\") ,\n",
    "                color=abs(A[i,j]) > .0001 ? (i==redrow ? rowcolor : :black) : :white, \n",
    "                marker=:square, markersize=30, aspectratio=1, yflip=true, yaxis=[.5,n+.5],xaxis=[.5,n+.5])\n",
    "  end\n",
    "  plot!()\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4×4 Array{Float64,2}:\n",
       "  2.0  12.0   4.0   7.0\n",
       " 29.0  12.0  69.0  24.0\n",
       "  7.0   7.0   7.0   7.0\n",
       "  3.0   7.0   5.0   2.0"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = [2 12 4 7; 29 12 69 24 ; 7 7 7 7; 3 7 5 2]\n",
    "A = A*1.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip8200\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip8200)\" d=\"\n",
       "M0 1600 L2400 1600 L2400 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip8201\">\n",
       "    <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip8200)\" d=\"\n",
       "M513.14 1487.47 L1953.37 1487.47 L1953.37 47.2441 L513.14 47.2441  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip8202\">\n",
       "    <rect x=\"513\" y=\"47\" width=\"1441\" height=\"1441\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip8202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  723.74,47.2441 723.74,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1063.42,47.2441 1063.42,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1403.09,47.2441 1403.09,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1742.77,47.2441 1742.77,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,257.844 1953.37,257.844 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,597.521 1953.37,597.521 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,937.198 1953.37,937.198 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,1276.87 1953.37,1276.87 \n",
       "  \"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M603.74 137.844 L603.74 377.844 L843.74 377.844 L843.74 137.844 L603.74 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M943.417 137.844 L943.417 377.844 L1183.42 377.844 L1183.42 137.844 L943.417 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M1283.09 137.844 L1283.09 377.844 L1523.09 377.844 L1523.09 137.844 L1283.09 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M1622.77 137.844 L1622.77 377.844 L1862.77 377.844 L1862.77 137.844 L1622.77 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M603.74 477.521 L603.74 717.521 L843.74 717.521 L843.74 477.521 L603.74 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M943.417 477.521 L943.417 717.521 L1183.42 717.521 L1183.42 477.521 L943.417 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M1283.09 477.521 L1283.09 717.521 L1523.09 717.521 L1523.09 477.521 L1283.09 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M1622.77 477.521 L1622.77 717.521 L1862.77 717.521 L1862.77 477.521 L1622.77 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M603.74 817.198 L603.74 1057.2 L843.74 1057.2 L843.74 817.198 L603.74 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M943.417 817.198 L943.417 1057.2 L1183.42 1057.2 L1183.42 817.198 L943.417 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M1283.09 817.198 L1283.09 1057.2 L1523.09 1057.2 L1523.09 817.198 L1283.09 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M1622.77 817.198 L1622.77 1057.2 L1862.77 1057.2 L1862.77 817.198 L1622.77 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M603.74 1156.87 L603.74 1396.87 L843.74 1396.87 L843.74 1156.87 L603.74 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M943.417 1156.87 L943.417 1396.87 L1183.42 1396.87 L1183.42 1156.87 L943.417 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M1283.09 1156.87 L1283.09 1396.87 L1523.09 1396.87 L1523.09 1156.87 L1283.09 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8202)\" d=\"M1622.77 1156.87 L1622.77 1396.87 L1862.77 1396.87 L1862.77 1156.87 L1622.77 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 288.344)\" x=\"723.74\" y=\"288.344\">2.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 288.344)\" x=\"1063.42\" y=\"288.344\">12.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 288.344)\" x=\"1403.09\" y=\"288.344\">4.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 288.344)\" x=\"1742.77\" y=\"288.344\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 628.021)\" x=\"723.74\" y=\"628.021\">29.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 628.021)\" x=\"1063.42\" y=\"628.021\">12.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 628.021)\" x=\"1403.09\" y=\"628.021\">69.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 628.021)\" x=\"1742.77\" y=\"628.021\">24.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 967.698)\" x=\"723.74\" y=\"967.698\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 967.698)\" x=\"1063.42\" y=\"967.698\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 967.698)\" x=\"1403.09\" y=\"967.698\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 967.698)\" x=\"1742.77\" y=\"967.698\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 1307.37)\" x=\"723.74\" y=\"1307.37\">3.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 1307.37)\" x=\"1063.42\" y=\"1307.37\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 1307.37)\" x=\"1403.09\" y=\"1307.37\">5.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 1307.37)\" x=\"1742.77\" y=\"1307.37\">2.0</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lookat(A)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## What multiple of the first row must i subtract from the second row to zero out the (2,1) entry?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4×4 Array{Float64,2}:\n",
       " 0.0  0.0  0.0  0.0\n",
       " 0.0  0.0  0.0  0.0\n",
       " 0.0  0.0  0.0  0.0\n",
       " 0.0  0.0  0.0  0.0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L = fill(0.0, 4,4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14.5"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L[2,1] = A[2,1]/A[1,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip8600\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip8600)\" d=\"\n",
       "M0 1600 L2400 1600 L2400 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip8601\">\n",
       "    <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip8600)\" d=\"\n",
       "M513.14 1487.47 L1953.37 1487.47 L1953.37 47.2441 L513.14 47.2441  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip8602\">\n",
       "    <rect x=\"513\" y=\"47\" width=\"1441\" height=\"1441\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip8602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  723.74,47.2441 723.74,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1063.42,47.2441 1063.42,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1403.09,47.2441 1403.09,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1742.77,47.2441 1742.77,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,257.844 1953.37,257.844 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,597.521 1953.37,597.521 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,937.198 1953.37,937.198 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip8602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,1276.87 1953.37,1276.87 \n",
       "  \"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M603.74 137.844 L603.74 377.844 L843.74 377.844 L843.74 137.844 L603.74 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M943.417 137.844 L943.417 377.844 L1183.42 377.844 L1183.42 137.844 L943.417 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M1283.09 137.844 L1283.09 377.844 L1523.09 377.844 L1523.09 137.844 L1283.09 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M1622.77 137.844 L1622.77 377.844 L1862.77 377.844 L1862.77 137.844 L1622.77 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M603.74 477.521 L603.74 717.521 L843.74 717.521 L843.74 477.521 L603.74 477.521 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M943.417 477.521 L943.417 717.521 L1183.42 717.521 L1183.42 477.521 L943.417 477.521 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M1283.09 477.521 L1283.09 717.521 L1523.09 717.521 L1523.09 477.521 L1283.09 477.521 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M1622.77 477.521 L1622.77 717.521 L1862.77 717.521 L1862.77 477.521 L1622.77 477.521 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M603.74 817.198 L603.74 1057.2 L843.74 1057.2 L843.74 817.198 L603.74 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M943.417 817.198 L943.417 1057.2 L1183.42 1057.2 L1183.42 817.198 L943.417 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M1283.09 817.198 L1283.09 1057.2 L1523.09 1057.2 L1523.09 817.198 L1283.09 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M1622.77 817.198 L1622.77 1057.2 L1862.77 1057.2 L1862.77 817.198 L1622.77 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M603.74 1156.87 L603.74 1396.87 L843.74 1396.87 L843.74 1156.87 L603.74 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M943.417 1156.87 L943.417 1396.87 L1183.42 1396.87 L1183.42 1156.87 L943.417 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M1283.09 1156.87 L1283.09 1396.87 L1523.09 1396.87 L1523.09 1156.87 L1283.09 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip8602)\" d=\"M1622.77 1156.87 L1622.77 1396.87 L1862.77 1396.87 L1862.77 1156.87 L1622.77 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 288.344)\" x=\"723.74\" y=\"288.344\">2.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 288.344)\" x=\"1063.42\" y=\"288.344\">12.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 288.344)\" x=\"1403.09\" y=\"288.344\">4.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 288.344)\" x=\"1742.77\" y=\"288.344\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 628.021)\" x=\"723.74\" y=\"628.021\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 628.021)\" x=\"1063.42\" y=\"628.021\">-162.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 628.021)\" x=\"1403.09\" y=\"628.021\">11.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 628.021)\" x=\"1742.77\" y=\"628.021\">-77.5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 967.698)\" x=\"723.74\" y=\"967.698\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 967.698)\" x=\"1063.42\" y=\"967.698\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 967.698)\" x=\"1403.09\" y=\"967.698\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 967.698)\" x=\"1742.77\" y=\"967.698\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 1307.37)\" x=\"723.74\" y=\"1307.37\">3.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 1307.37)\" x=\"1063.42\" y=\"1307.37\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 1307.37)\" x=\"1403.09\" y=\"1307.37\">5.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip8600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 1307.37)\" x=\"1742.77\" y=\"1307.37\">2.0</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A[2,:] -= L[2,1]*A[1,:]; # subtract the multiplier times the first row from the second row\n",
    "lookat(A, redrow=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.5"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L[3,1] = A[3,1]/A[1,1] # the diagonal entry that we divide by is called the \"pivot\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip9000\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9000)\" d=\"\n",
       "M0 1600 L2400 1600 L2400 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9001\">\n",
       "    <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9000)\" d=\"\n",
       "M513.14 1487.47 L1953.37 1487.47 L1953.37 47.2441 L513.14 47.2441  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9002\">\n",
       "    <rect x=\"513\" y=\"47\" width=\"1441\" height=\"1441\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  723.74,47.2441 723.74,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1063.42,47.2441 1063.42,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1403.09,47.2441 1403.09,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1742.77,47.2441 1742.77,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,257.844 1953.37,257.844 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,597.521 1953.37,597.521 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,937.198 1953.37,937.198 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,1276.87 1953.37,1276.87 \n",
       "  \"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M603.74 137.844 L603.74 377.844 L843.74 377.844 L843.74 137.844 L603.74 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M943.417 137.844 L943.417 377.844 L1183.42 377.844 L1183.42 137.844 L943.417 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M1283.09 137.844 L1283.09 377.844 L1523.09 377.844 L1523.09 137.844 L1283.09 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M1622.77 137.844 L1622.77 377.844 L1862.77 377.844 L1862.77 137.844 L1622.77 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M603.74 477.521 L603.74 717.521 L843.74 717.521 L843.74 477.521 L603.74 477.521 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M943.417 477.521 L943.417 717.521 L1183.42 717.521 L1183.42 477.521 L943.417 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M1283.09 477.521 L1283.09 717.521 L1523.09 717.521 L1523.09 477.521 L1283.09 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M1622.77 477.521 L1622.77 717.521 L1862.77 717.521 L1862.77 477.521 L1622.77 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M603.74 817.198 L603.74 1057.2 L843.74 1057.2 L843.74 817.198 L603.74 817.198 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M943.417 817.198 L943.417 1057.2 L1183.42 1057.2 L1183.42 817.198 L943.417 817.198 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M1283.09 817.198 L1283.09 1057.2 L1523.09 1057.2 L1523.09 817.198 L1283.09 817.198 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M1622.77 817.198 L1622.77 1057.2 L1862.77 1057.2 L1862.77 817.198 L1622.77 817.198 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M603.74 1156.87 L603.74 1396.87 L843.74 1396.87 L843.74 1156.87 L603.74 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M943.417 1156.87 L943.417 1396.87 L1183.42 1396.87 L1183.42 1156.87 L943.417 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M1283.09 1156.87 L1283.09 1396.87 L1523.09 1396.87 L1523.09 1156.87 L1283.09 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9002)\" d=\"M1622.77 1156.87 L1622.77 1396.87 L1862.77 1396.87 L1862.77 1156.87 L1622.77 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 288.344)\" x=\"723.74\" y=\"288.344\">2.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 288.344)\" x=\"1063.42\" y=\"288.344\">12.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 288.344)\" x=\"1403.09\" y=\"288.344\">4.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 288.344)\" x=\"1742.77\" y=\"288.344\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 628.021)\" x=\"723.74\" y=\"628.021\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 628.021)\" x=\"1063.42\" y=\"628.021\">-162.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 628.021)\" x=\"1403.09\" y=\"628.021\">11.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 628.021)\" x=\"1742.77\" y=\"628.021\">-77.5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 967.698)\" x=\"723.74\" y=\"967.698\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 967.698)\" x=\"1063.42\" y=\"967.698\">-35.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 967.698)\" x=\"1403.09\" y=\"967.698\">-7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 967.698)\" x=\"1742.77\" y=\"967.698\">-17.5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 1307.37)\" x=\"723.74\" y=\"1307.37\">3.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 1307.37)\" x=\"1063.42\" y=\"1307.37\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 1307.37)\" x=\"1403.09\" y=\"1307.37\">5.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 1307.37)\" x=\"1742.77\" y=\"1307.37\">2.0</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A[3,:] -= L[3,1]*A[1,:]; # subtract the multiplier times the first row from the second row\n",
    "lookat(A, redrow=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip9400\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9400)\" d=\"\n",
       "M0 1600 L2400 1600 L2400 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9401\">\n",
       "    <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9400)\" d=\"\n",
       "M513.14 1487.47 L1953.37 1487.47 L1953.37 47.2441 L513.14 47.2441  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9402\">\n",
       "    <rect x=\"513\" y=\"47\" width=\"1441\" height=\"1441\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  723.74,47.2441 723.74,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1063.42,47.2441 1063.42,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1403.09,47.2441 1403.09,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1742.77,47.2441 1742.77,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,257.844 1953.37,257.844 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,597.521 1953.37,597.521 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,937.198 1953.37,937.198 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,1276.87 1953.37,1276.87 \n",
       "  \"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M603.74 137.844 L603.74 377.844 L843.74 377.844 L843.74 137.844 L603.74 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M943.417 137.844 L943.417 377.844 L1183.42 377.844 L1183.42 137.844 L943.417 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M1283.09 137.844 L1283.09 377.844 L1523.09 377.844 L1523.09 137.844 L1283.09 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M1622.77 137.844 L1622.77 377.844 L1862.77 377.844 L1862.77 137.844 L1622.77 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M603.74 477.521 L603.74 717.521 L843.74 717.521 L843.74 477.521 L603.74 477.521 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M943.417 477.521 L943.417 717.521 L1183.42 717.521 L1183.42 477.521 L943.417 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M1283.09 477.521 L1283.09 717.521 L1523.09 717.521 L1523.09 477.521 L1283.09 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M1622.77 477.521 L1622.77 717.521 L1862.77 717.521 L1862.77 477.521 L1622.77 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M603.74 817.198 L603.74 1057.2 L843.74 1057.2 L843.74 817.198 L603.74 817.198 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M943.417 817.198 L943.417 1057.2 L1183.42 1057.2 L1183.42 817.198 L943.417 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M1283.09 817.198 L1283.09 1057.2 L1523.09 1057.2 L1523.09 817.198 L1283.09 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M1622.77 817.198 L1622.77 1057.2 L1862.77 1057.2 L1862.77 817.198 L1622.77 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M603.74 1156.87 L603.74 1396.87 L843.74 1396.87 L843.74 1156.87 L603.74 1156.87 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M943.417 1156.87 L943.417 1396.87 L1183.42 1396.87 L1183.42 1156.87 L943.417 1156.87 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M1283.09 1156.87 L1283.09 1396.87 L1523.09 1396.87 L1523.09 1156.87 L1283.09 1156.87 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9402)\" d=\"M1622.77 1156.87 L1622.77 1396.87 L1862.77 1396.87 L1862.77 1156.87 L1622.77 1156.87 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 288.344)\" x=\"723.74\" y=\"288.344\">2.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 288.344)\" x=\"1063.42\" y=\"288.344\">12.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 288.344)\" x=\"1403.09\" y=\"288.344\">4.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 288.344)\" x=\"1742.77\" y=\"288.344\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 628.021)\" x=\"723.74\" y=\"628.021\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 628.021)\" x=\"1063.42\" y=\"628.021\">-162.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 628.021)\" x=\"1403.09\" y=\"628.021\">11.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 628.021)\" x=\"1742.77\" y=\"628.021\">-77.5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 967.698)\" x=\"723.74\" y=\"967.698\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 967.698)\" x=\"1063.42\" y=\"967.698\">-35.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 967.698)\" x=\"1403.09\" y=\"967.698\">-7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 967.698)\" x=\"1742.77\" y=\"967.698\">-17.5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 1307.37)\" x=\"723.74\" y=\"1307.37\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 1307.37)\" x=\"1063.42\" y=\"1307.37\">-11.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 1307.37)\" x=\"1403.09\" y=\"1307.37\">-1.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 1307.37)\" x=\"1742.77\" y=\"1307.37\">-8.5</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L[4,1] = A[4,1]/A[1,1] \n",
    "A[4,:] -= L[4,1]*A[1,:]; # subtract the multiplier times the first row from the second row\n",
    "lookat(A, redrow=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip9800\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9800)\" d=\"\n",
       "M0 1600 L2400 1600 L2400 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9801\">\n",
       "    <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9800)\" d=\"\n",
       "M513.14 1487.47 L1953.37 1487.47 L1953.37 47.2441 L513.14 47.2441  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9802\">\n",
       "    <rect x=\"513\" y=\"47\" width=\"1441\" height=\"1441\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  723.74,47.2441 723.74,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1063.42,47.2441 1063.42,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1403.09,47.2441 1403.09,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1742.77,47.2441 1742.77,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,257.844 1953.37,257.844 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,597.521 1953.37,597.521 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,937.198 1953.37,937.198 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,1276.87 1953.37,1276.87 \n",
       "  \"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M603.74 137.844 L603.74 377.844 L843.74 377.844 L843.74 137.844 L603.74 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M943.417 137.844 L943.417 377.844 L1183.42 377.844 L1183.42 137.844 L943.417 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M1283.09 137.844 L1283.09 377.844 L1523.09 377.844 L1523.09 137.844 L1283.09 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M1622.77 137.844 L1622.77 377.844 L1862.77 377.844 L1862.77 137.844 L1622.77 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M603.74 477.521 L603.74 717.521 L843.74 717.521 L843.74 477.521 L603.74 477.521 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M943.417 477.521 L943.417 717.521 L1183.42 717.521 L1183.42 477.521 L943.417 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M1283.09 477.521 L1283.09 717.521 L1523.09 717.521 L1523.09 477.521 L1283.09 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M1622.77 477.521 L1622.77 717.521 L1862.77 717.521 L1862.77 477.521 L1622.77 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M603.74 817.198 L603.74 1057.2 L843.74 1057.2 L843.74 817.198 L603.74 817.198 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M943.417 817.198 L943.417 1057.2 L1183.42 1057.2 L1183.42 817.198 L943.417 817.198 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M1283.09 817.198 L1283.09 1057.2 L1523.09 1057.2 L1523.09 817.198 L1283.09 817.198 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M1622.77 817.198 L1622.77 1057.2 L1862.77 1057.2 L1862.77 817.198 L1622.77 817.198 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M603.74 1156.87 L603.74 1396.87 L843.74 1396.87 L843.74 1156.87 L603.74 1156.87 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M943.417 1156.87 L943.417 1396.87 L1183.42 1396.87 L1183.42 1156.87 L943.417 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M1283.09 1156.87 L1283.09 1396.87 L1523.09 1396.87 L1523.09 1156.87 L1283.09 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip9802)\" d=\"M1622.77 1156.87 L1622.77 1396.87 L1862.77 1396.87 L1862.77 1156.87 L1622.77 1156.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 288.344)\" x=\"723.74\" y=\"288.344\">2.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 288.344)\" x=\"1063.42\" y=\"288.344\">12.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 288.344)\" x=\"1403.09\" y=\"288.344\">4.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 288.344)\" x=\"1742.77\" y=\"288.344\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 628.021)\" x=\"723.74\" y=\"628.021\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 628.021)\" x=\"1063.42\" y=\"628.021\">-162.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 628.021)\" x=\"1403.09\" y=\"628.021\">11.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 628.021)\" x=\"1742.77\" y=\"628.021\">-77.5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 967.698)\" x=\"723.74\" y=\"967.698\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 967.698)\" x=\"1063.42\" y=\"967.698\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 967.698)\" x=\"1403.09\" y=\"967.698\">-9.38</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 967.698)\" x=\"1742.77\" y=\"967.698\">-0.76</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 1307.37)\" x=\"723.74\" y=\"1307.37\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 1307.37)\" x=\"1063.42\" y=\"1307.37\">-11.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 1307.37)\" x=\"1403.09\" y=\"1307.37\">-1.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 1307.37)\" x=\"1742.77\" y=\"1307.37\">-8.5</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L[3,2] = A[3,2]/A[2,2] \n",
    "A[3,:] -= L[3,2]*A[2,:]; # subtract the multiplier times the first row from the second row\n",
    "lookat(A, redrow=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip0200\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip0200)\" d=\"\n",
       "M0 1600 L2400 1600 L2400 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip0201\">\n",
       "    <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip0200)\" d=\"\n",
       "M513.14 1487.47 L1953.37 1487.47 L1953.37 47.2441 L513.14 47.2441  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip0202\">\n",
       "    <rect x=\"513\" y=\"47\" width=\"1441\" height=\"1441\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  723.74,47.2441 723.74,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1063.42,47.2441 1063.42,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1403.09,47.2441 1403.09,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1742.77,47.2441 1742.77,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,257.844 1953.37,257.844 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,597.521 1953.37,597.521 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,937.198 1953.37,937.198 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,1276.87 1953.37,1276.87 \n",
       "  \"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M603.74 137.844 L603.74 377.844 L843.74 377.844 L843.74 137.844 L603.74 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M943.417 137.844 L943.417 377.844 L1183.42 377.844 L1183.42 137.844 L943.417 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M1283.09 137.844 L1283.09 377.844 L1523.09 377.844 L1523.09 137.844 L1283.09 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M1622.77 137.844 L1622.77 377.844 L1862.77 377.844 L1862.77 137.844 L1622.77 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M603.74 477.521 L603.74 717.521 L843.74 717.521 L843.74 477.521 L603.74 477.521 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M943.417 477.521 L943.417 717.521 L1183.42 717.521 L1183.42 477.521 L943.417 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M1283.09 477.521 L1283.09 717.521 L1523.09 717.521 L1523.09 477.521 L1283.09 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M1622.77 477.521 L1622.77 717.521 L1862.77 717.521 L1862.77 477.521 L1622.77 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M603.74 817.198 L603.74 1057.2 L843.74 1057.2 L843.74 817.198 L603.74 817.198 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M943.417 817.198 L943.417 1057.2 L1183.42 1057.2 L1183.42 817.198 L943.417 817.198 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M1283.09 817.198 L1283.09 1057.2 L1523.09 1057.2 L1523.09 817.198 L1283.09 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M1622.77 817.198 L1622.77 1057.2 L1862.77 1057.2 L1862.77 817.198 L1622.77 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M603.74 1156.87 L603.74 1396.87 L843.74 1396.87 L843.74 1156.87 L603.74 1156.87 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M943.417 1156.87 L943.417 1396.87 L1183.42 1396.87 L1183.42 1156.87 L943.417 1156.87 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M1283.09 1156.87 L1283.09 1396.87 L1523.09 1396.87 L1523.09 1156.87 L1283.09 1156.87 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0202)\" d=\"M1622.77 1156.87 L1622.77 1396.87 L1862.77 1396.87 L1862.77 1156.87 L1622.77 1156.87 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 288.344)\" x=\"723.74\" y=\"288.344\">2.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 288.344)\" x=\"1063.42\" y=\"288.344\">12.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 288.344)\" x=\"1403.09\" y=\"288.344\">4.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 288.344)\" x=\"1742.77\" y=\"288.344\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 628.021)\" x=\"723.74\" y=\"628.021\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 628.021)\" x=\"1063.42\" y=\"628.021\">-162.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 628.021)\" x=\"1403.09\" y=\"628.021\">11.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 628.021)\" x=\"1742.77\" y=\"628.021\">-77.5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 967.698)\" x=\"723.74\" y=\"967.698\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 967.698)\" x=\"1063.42\" y=\"967.698\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 967.698)\" x=\"1403.09\" y=\"967.698\">-9.38</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 967.698)\" x=\"1742.77\" y=\"967.698\">-0.76</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 1307.37)\" x=\"723.74\" y=\"1307.37\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 1307.37)\" x=\"1063.42\" y=\"1307.37\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 1307.37)\" x=\"1403.09\" y=\"1307.37\">-1.75</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 1307.37)\" x=\"1742.77\" y=\"1307.37\">-3.24</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L[4,2] = A[4,2]/A[2,2] \n",
    "A[4,:] -= L[4,2]*A[2,:]; # subtract the multiplier times the first row from the second row\n",
    "lookat(A, redrow=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip0600\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip0600)\" d=\"\n",
       "M0 1600 L2400 1600 L2400 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip0601\">\n",
       "    <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip0600)\" d=\"\n",
       "M513.14 1487.47 L1953.37 1487.47 L1953.37 47.2441 L513.14 47.2441  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip0602\">\n",
       "    <rect x=\"513\" y=\"47\" width=\"1441\" height=\"1441\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip0602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  723.74,47.2441 723.74,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1063.42,47.2441 1063.42,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1403.09,47.2441 1403.09,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1742.77,47.2441 1742.77,1487.47 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,257.844 1953.37,257.844 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,597.521 1953.37,597.521 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,937.198 1953.37,937.198 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0602)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  513.14,1276.87 1953.37,1276.87 \n",
       "  \"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M603.74 137.844 L603.74 377.844 L843.74 377.844 L843.74 137.844 L603.74 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M943.417 137.844 L943.417 377.844 L1183.42 377.844 L1183.42 137.844 L943.417 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M1283.09 137.844 L1283.09 377.844 L1523.09 377.844 L1523.09 137.844 L1283.09 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M1622.77 137.844 L1622.77 377.844 L1862.77 377.844 L1862.77 137.844 L1622.77 137.844 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M603.74 477.521 L603.74 717.521 L843.74 717.521 L843.74 477.521 L603.74 477.521 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M943.417 477.521 L943.417 717.521 L1183.42 717.521 L1183.42 477.521 L943.417 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M1283.09 477.521 L1283.09 717.521 L1523.09 717.521 L1523.09 477.521 L1283.09 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M1622.77 477.521 L1622.77 717.521 L1862.77 717.521 L1862.77 477.521 L1622.77 477.521 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M603.74 817.198 L603.74 1057.2 L843.74 1057.2 L843.74 817.198 L603.74 817.198 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M943.417 817.198 L943.417 1057.2 L1183.42 1057.2 L1183.42 817.198 L943.417 817.198 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M1283.09 817.198 L1283.09 1057.2 L1523.09 1057.2 L1523.09 817.198 L1283.09 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M1622.77 817.198 L1622.77 1057.2 L1862.77 1057.2 L1862.77 817.198 L1622.77 817.198 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M603.74 1156.87 L603.74 1396.87 L843.74 1396.87 L843.74 1156.87 L603.74 1156.87 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M943.417 1156.87 L943.417 1396.87 L1183.42 1396.87 L1183.42 1156.87 L943.417 1156.87 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M1283.09 1156.87 L1283.09 1396.87 L1523.09 1396.87 L1523.09 1156.87 L1283.09 1156.87 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<path clip-path=\"url(#clip0602)\" d=\"M1622.77 1156.87 L1622.77 1396.87 L1862.77 1396.87 L1862.77 1156.87 L1622.77 1156.87 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 288.344)\" x=\"723.74\" y=\"288.344\">2.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 288.344)\" x=\"1063.42\" y=\"288.344\">12.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 288.344)\" x=\"1403.09\" y=\"288.344\">4.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 288.344)\" x=\"1742.77\" y=\"288.344\">7.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 628.021)\" x=\"723.74\" y=\"628.021\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 628.021)\" x=\"1063.42\" y=\"628.021\">-162.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 628.021)\" x=\"1403.09\" y=\"628.021\">11.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 628.021)\" x=\"1742.77\" y=\"628.021\">-77.5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 967.698)\" x=\"723.74\" y=\"967.698\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 967.698)\" x=\"1063.42\" y=\"967.698\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 967.698)\" x=\"1403.09\" y=\"967.698\">-9.38</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 967.698)\" x=\"1742.77\" y=\"967.698\">-0.76</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 723.74, 1307.37)\" x=\"723.74\" y=\"1307.37\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1063.42, 1307.37)\" x=\"1063.42\" y=\"1307.37\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1403.09, 1307.37)\" x=\"1403.09\" y=\"1307.37\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0600)\">\n",
       "<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1742.77, 1307.37)\" x=\"1742.77\" y=\"1307.37\">-3.1</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L[4,3] = A[4,3]/A[3,3] \n",
    "A[4,:] -= L[4,3]*A[3,:]; # subtract the multiplier times the first row from the second row\n",
    "lookat(A, redrow=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "n = 6\n",
    "A = rand(n,n)\n",
    "keepA = [copy(A)]\n",
    "row = [0]\n",
    "L = fill(0.0,n,n)\n",
    "for j=1:n, i=j+1:n\n",
    "    L[i,j] = A[i,j] / A[j,j]\n",
    "    A[i,:] -= L[i,j] * A[j,:]\n",
    "    push!(keepA,copy(A))\n",
    "    push!(row,i)\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "using Interact"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.webio.node+json": {
       "children": [
        {
         "children": [
          {
           "children": [
            {
             "children": [
              {
               "children": [
                {
                 "children": [
                  "i"
                 ],
                 "instanceArgs": {
                  "namespace": "html",
                  "tag": "label"
                 },
                 "nodeType": "DOM",
                 "props": {
                  "className": "interact ",
                  "style": {
                   "padding": "5px 10px 0px 10px"
                  }
                 },
                 "type": "node"
                }
               ],
               "instanceArgs": {
                "namespace": "html",
                "tag": "div"
               },
               "nodeType": "DOM",
               "props": {
                "className": "interact-flex-row-left"
               },
               "type": "node"
              },
              {
               "children": [
                {
                 "children": [],
                 "instanceArgs": {
                  "namespace": "html",
                  "tag": "input"
                 },
                 "nodeType": "DOM",
                 "props": {
                  "attributes": {
                   "data-bind": "numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}",
                   "orient": "horizontal",
                   "type": "range"
                  },
                  "className": "slider slider is-fullwidth",
                  "max": 16,
                  "min": 1,
                  "step": 1,
                  "style": {}
                 },
                 "type": "node"
                }
               ],
               "instanceArgs": {
                "namespace": "html",
                "tag": "div"
               },
               "nodeType": "DOM",
               "props": {
                "className": "interact-flex-row-center"
               },
               "type": "node"
              },
              {
               "children": [
                {
                 "children": [],
                 "instanceArgs": {
                  "namespace": "html",
                  "tag": "p"
                 },
                 "nodeType": "DOM",
                 "props": {
                  "attributes": {
                   "data-bind": "text: formatted_val"
                  }
                 },
                 "type": "node"
                }
               ],
               "instanceArgs": {
                "namespace": "html",
                "tag": "div"
               },
               "nodeType": "DOM",
               "props": {
                "className": "interact-flex-row-right"
               },
               "type": "node"
              }
             ],
             "instanceArgs": {
              "namespace": "html",
              "tag": "div"
             },
             "nodeType": "DOM",
             "props": {
              "className": "interact-flex-row interact-widget"
             },
             "type": "node"
            }
           ],
           "instanceArgs": {
            "handlers": {
             "changes": [
              "(function (val){return (val!=this.model[\"changes\"]()) ? (this.valueFromJulia[\"changes\"]=true, this.model[\"changes\"](val)) : undefined})"
             ],
             "index": [
              "(function (val){return (val!=this.model[\"index\"]()) ? (this.valueFromJulia[\"index\"]=true, this.model[\"index\"](val)) : undefined})"
             ]
            },
            "id": "12019567677823032763",
            "imports": {
             "data": [
              {
               "name": "knockout",
               "type": "js",
               "url": "/assetserver/2618192f019dfcc40a9013ef31cb09a511d8ea26-knockout.js"
              },
              {
               "name": "knockout_punches",
               "type": "js",
               "url": "/assetserver/df29ad18e8884e98d1d36dd0c339f642f729bf96-knockout_punches.js"
              },
              {
               "name": null,
               "type": "js",
               "url": "/assetserver/860bb4a9e1927248d6fb4a7d59e926f541e3bfc2-all.js"
              },
              {
               "name": null,
               "type": "css",
               "url": "/assetserver/4b164c07c3632d5e274899a8ab8726c70dab4aff-style.css"
              },
              {
               "name": null,
               "type": "css",
               "url": "/assetserver/67252656a23d4f0f6f4ba7ab8e8eb9ffc4ae9b5d-bulma_confined.min.css"
              }
             ],
             "type": "async_block"
            },
            "mount_callbacks": [
             "function () {\n    var handler = (function (ko, koPunches) {\n    ko.punches.enableAll();\n    ko.bindingHandlers.numericValue = {\n        init: function(element, valueAccessor, allBindings, data, context) {\n            var stringified = ko.observable(ko.unwrap(valueAccessor()));\n            stringified.subscribe(function(value) {\n                var val = parseFloat(value);\n                if (!isNaN(val)) {\n                    valueAccessor()(val);\n                }\n            });\n            valueAccessor().subscribe(function(value) {\n                var str = JSON.stringify(value);\n                if ((str == \"0\") && ([\"-0\", \"-0.\"].indexOf(stringified()) >= 0))\n                     return;\n                 if ([\"null\", \"\"].indexOf(str) >= 0)\n                     return;\n                stringified(str);\n            });\n            ko.applyBindingsToNode(\n                element,\n                {\n                    value: stringified,\n                    valueUpdate: allBindings.get('valueUpdate'),\n                },\n                context,\n            );\n        }\n    };\n    var json_data = {\"formatted_vals\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\"],\"changes\":WebIO.getval({\"name\":\"changes\",\"scope\":\"12019567677823032763\",\"id\":\"ob_18\",\"type\":\"observable\"}),\"index\":WebIO.getval({\"name\":\"index\",\"scope\":\"12019567677823032763\",\"id\":\"ob_17\",\"type\":\"observable\"})};\n    var self = this;\n    function AppViewModel() {\n        for (var key in json_data) {\n            var el = json_data[key];\n            this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\n        }\n        \n        [this[\"formatted_val\"]=ko.computed(    function(){\n        return this.formatted_vals()[parseInt(this.index())-(1)];\n    }\n,this)]\n        [this[\"changes\"].subscribe((function (val){!(this.valueFromJulia[\"changes\"]) ? (WebIO.setval({\"name\":\"changes\",\"scope\":\"12019567677823032763\",\"id\":\"ob_18\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"changes\"]=false}),self),this[\"index\"].subscribe((function (val){!(this.valueFromJulia[\"index\"]) ? (WebIO.setval({\"name\":\"index\",\"scope\":\"12019567677823032763\",\"id\":\"ob_17\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"index\"]=false}),self)]\n        \n    }\n    self.model = new AppViewModel();\n    self.valueFromJulia = {};\n    for (var key in json_data) {\n        self.valueFromJulia[key] = false;\n    }\n    ko.applyBindings(self.model, self.dom);\n}\n);\n    (WebIO.importBlock({\"data\":[{\"name\":\"knockout\",\"type\":\"js\",\"url\":\"/assetserver/2618192f019dfcc40a9013ef31cb09a511d8ea26-knockout.js\"},{\"name\":\"knockout_punches\",\"type\":\"js\",\"url\":\"/assetserver/df29ad18e8884e98d1d36dd0c339f642f729bf96-knockout_punches.js\"}],\"type\":\"async_block\"})).then((imports) => handler.apply(this, imports));\n}\n"
            ],
            "observables": {
             "changes": {
              "id": "ob_18",
              "sync": false,
              "value": 0
             },
             "index": {
              "id": "ob_17",
              "sync": true,
              "value": 8
             }
            },
            "systemjs_options": null
           },
           "nodeType": "Scope",
           "props": {},
           "type": "node"
          }
         ],
         "instanceArgs": {
          "namespace": "html",
          "tag": "div"
         },
         "nodeType": "DOM",
         "props": {
          "className": "field interact-widget"
         },
         "type": "node"
        },
        {
         "children": [
          {
           "children": [],
           "instanceArgs": {
            "id": "ob_24",
            "name": "obs-node"
           },
           "nodeType": "ObservableNode",
           "props": {},
           "type": "node"
          }
         ],
         "instanceArgs": {
          "handlers": {},
          "id": "4433206657539994618",
          "imports": {
           "data": [],
           "type": "async_block"
          },
          "mount_callbacks": [],
          "observables": {
           "obs-node": {
            "id": "ob_24",
            "sync": false,
            "value": {
             "children": [
              {
               "children": [],
               "instanceArgs": {
                "namespace": "html",
                "tag": "div"
               },
               "nodeType": "DOM",
               "props": {
                "setInnerHtml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n<defs>\n  <clipPath id=\"clip3800\">\n    <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n  </clipPath>\n</defs>\n<path clip-path=\"url(#clip3800)\" d=\"\nM0 1600 L2400 1600 L2400 0 L0 0  Z\n  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n<defs>\n  <clipPath id=\"clip3801\">\n    <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n  </clipPath>\n</defs>\n<path clip-path=\"url(#clip3800)\" d=\"\nM513.14 1487.47 L1953.37 1487.47 L1953.37 47.2441 L513.14 47.2441  Z\n  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n<defs>\n  <clipPath id=\"clip3802\">\n    <rect x=\"513\" y=\"47\" width=\"1441\" height=\"1441\"/>\n  </clipPath>\n</defs>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  667.127,47.2441 667.127,1487.47 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  893.578,47.2441 893.578,1487.47 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  1120.03,47.2441 1120.03,1487.47 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  1346.48,47.2441 1346.48,1487.47 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  1572.93,47.2441 1572.93,1487.47 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  1799.38,47.2441 1799.38,1487.47 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  513.14,201.231 1953.37,201.231 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  513.14,427.682 1953.37,427.682 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  513.14,654.134 1953.37,654.134 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  513.14,880.585 1953.37,880.585 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  513.14,1107.04 1953.37,1107.04 \n  \"/>\n<polyline clip-path=\"url(#clip3802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n  513.14,1333.49 1953.37,1333.49 \n  \"/>\n<path clip-path=\"url(#clip3802)\" d=\"M547.127 81.231 L547.127 321.231 L787.127 321.231 L787.127 81.231 L547.127 81.231 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M773.578 81.231 L773.578 321.231 L1013.58 321.231 L1013.58 81.231 L773.578 81.231 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1000.03 81.231 L1000.03 321.231 L1240.03 321.231 L1240.03 81.231 L1000.03 81.231 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1226.48 81.231 L1226.48 321.231 L1466.48 321.231 L1466.48 81.231 L1226.48 81.231 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1452.93 81.231 L1452.93 321.231 L1692.93 321.231 L1692.93 81.231 L1452.93 81.231 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1679.38 81.231 L1679.38 321.231 L1919.38 321.231 L1919.38 81.231 L1679.38 81.231 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M547.127 307.682 L547.127 547.682 L787.127 547.682 L787.127 307.682 L547.127 307.682 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M773.578 307.682 L773.578 547.682 L1013.58 547.682 L1013.58 307.682 L773.578 307.682 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1000.03 307.682 L1000.03 547.682 L1240.03 547.682 L1240.03 307.682 L1000.03 307.682 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1226.48 307.682 L1226.48 547.682 L1466.48 547.682 L1466.48 307.682 L1226.48 307.682 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1452.93 307.682 L1452.93 547.682 L1692.93 547.682 L1692.93 307.682 L1452.93 307.682 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1679.38 307.682 L1679.38 547.682 L1919.38 547.682 L1919.38 307.682 L1679.38 307.682 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M547.127 534.134 L547.127 774.134 L787.127 774.134 L787.127 534.134 L547.127 534.134 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M773.578 534.134 L773.578 774.134 L1013.58 774.134 L1013.58 534.134 L773.578 534.134 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1000.03 534.134 L1000.03 774.134 L1240.03 774.134 L1240.03 534.134 L1000.03 534.134 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1226.48 534.134 L1226.48 774.134 L1466.48 774.134 L1466.48 534.134 L1226.48 534.134 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1452.93 534.134 L1452.93 774.134 L1692.93 774.134 L1692.93 534.134 L1452.93 534.134 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1679.38 534.134 L1679.38 774.134 L1919.38 774.134 L1919.38 534.134 L1679.38 534.134 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M547.127 760.585 L547.127 1000.59 L787.127 1000.59 L787.127 760.585 L547.127 760.585 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M773.578 760.585 L773.578 1000.59 L1013.58 1000.59 L1013.58 760.585 L773.578 760.585 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1000.03 760.585 L1000.03 1000.59 L1240.03 1000.59 L1240.03 760.585 L1000.03 760.585 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1226.48 760.585 L1226.48 1000.59 L1466.48 1000.59 L1466.48 760.585 L1226.48 760.585 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1452.93 760.585 L1452.93 1000.59 L1692.93 1000.59 L1692.93 760.585 L1452.93 760.585 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1679.38 760.585 L1679.38 1000.59 L1919.38 1000.59 L1919.38 760.585 L1679.38 760.585 Z\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M547.127 987.036 L547.127 1227.04 L787.127 1227.04 L787.127 987.036 L547.127 987.036 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M773.578 987.036 L773.578 1227.04 L1013.58 1227.04 L1013.58 987.036 L773.578 987.036 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1000.03 987.036 L1000.03 1227.04 L1240.03 1227.04 L1240.03 987.036 L1000.03 987.036 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1226.48 987.036 L1226.48 1227.04 L1466.48 1227.04 L1466.48 987.036 L1226.48 987.036 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1452.93 987.036 L1452.93 1227.04 L1692.93 1227.04 L1692.93 987.036 L1452.93 987.036 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1679.38 987.036 L1679.38 1227.04 L1919.38 1227.04 L1919.38 987.036 L1679.38 987.036 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M547.127 1213.49 L547.127 1453.49 L787.127 1453.49 L787.127 1213.49 L547.127 1213.49 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"3.2\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M773.578 1213.49 L773.578 1453.49 L1013.58 1453.49 L1013.58 1213.49 L773.578 1213.49 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1000.03 1213.49 L1000.03 1453.49 L1240.03 1453.49 L1240.03 1213.49 L1000.03 1213.49 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1226.48 1213.49 L1226.48 1453.49 L1466.48 1453.49 L1466.48 1213.49 L1226.48 1213.49 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1452.93 1213.49 L1452.93 1453.49 L1692.93 1453.49 L1692.93 1213.49 L1452.93 1213.49 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<path clip-path=\"url(#clip3802)\" d=\"M1679.38 1213.49 L1679.38 1453.49 L1919.38 1453.49 L1919.38 1213.49 L1679.38 1213.49 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"none\"/>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 667.127, 231.731)\" x=\"667.127\" y=\"231.731\">0.6</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 893.578, 231.731)\" x=\"893.578\" y=\"231.731\">0.72</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1120.03, 231.731)\" x=\"1120.03\" y=\"231.731\">0.05</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1346.48, 231.731)\" x=\"1346.48\" y=\"231.731\">0.66</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1572.93, 231.731)\" x=\"1572.93\" y=\"231.731\">0.18</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1799.38, 231.731)\" x=\"1799.38\" y=\"231.731\">0.86</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 667.127, 458.182)\" x=\"667.127\" y=\"458.182\">-0.0</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 893.578, 458.182)\" x=\"893.578\" y=\"458.182\">0.06</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1120.03, 458.182)\" x=\"1120.03\" y=\"458.182\">0.93</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1346.48, 458.182)\" x=\"1346.48\" y=\"458.182\">0.2</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1572.93, 458.182)\" x=\"1572.93\" y=\"458.182\">0.73</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1799.38, 458.182)\" x=\"1799.38\" y=\"458.182\">-0.18</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 667.127, 684.634)\" x=\"667.127\" y=\"684.634\">-0.0</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 893.578, 684.634)\" x=\"893.578\" y=\"684.634\">0.0</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1120.03, 684.634)\" x=\"1120.03\" y=\"684.634\">0.4</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1346.48, 684.634)\" x=\"1346.48\" y=\"684.634\">0.23</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1572.93, 684.634)\" x=\"1572.93\" y=\"684.634\">1.2</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1799.38, 684.634)\" x=\"1799.38\" y=\"684.634\">-0.04</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 667.127, 911.085)\" x=\"667.127\" y=\"911.085\">0.0</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 893.578, 911.085)\" x=\"893.578\" y=\"911.085\">0.0</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1120.03, 911.085)\" x=\"1120.03\" y=\"911.085\">-5.25</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1346.48, 911.085)\" x=\"1346.48\" y=\"911.085\">-0.81</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1572.93, 911.085)\" x=\"1572.93\" y=\"911.085\">-4.35</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1799.38, 911.085)\" x=\"1799.38\" y=\"911.085\">1.33</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 667.127, 1137.54)\" x=\"667.127\" y=\"1137.54\">0.0</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 893.578, 1137.54)\" x=\"893.578\" y=\"1137.54\">-0.35</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1120.03, 1137.54)\" x=\"1120.03\" y=\"1137.54\">-0.0</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1346.48, 1137.54)\" x=\"1346.48\" y=\"1137.54\">-0.45</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1572.93, 1137.54)\" x=\"1572.93\" y=\"1137.54\">0.51</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1799.38, 1137.54)\" x=\"1799.38\" y=\"1137.54\">-0.89</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 667.127, 1363.99)\" x=\"667.127\" y=\"1363.99\">0.0</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 893.578, 1363.99)\" x=\"893.578\" y=\"1363.99\">-0.28</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1120.03, 1363.99)\" x=\"1120.03\" y=\"1363.99\">0.03</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1346.48, 1363.99)\" x=\"1346.48\" y=\"1363.99\">-0.28</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1572.93, 1363.99)\" x=\"1572.93\" y=\"1363.99\">0.7</text>\n</g>\n<g clip-path=\"url(#clip3800)\">\n<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1799.38, 1363.99)\" x=\"1799.38\" y=\"1363.99\">0.51</text>\n</g>\n</svg>\n"
               },
               "type": "node"
              }
             ],
             "instanceArgs": {
              "namespace": "html",
              "tag": "div"
             },
             "nodeType": "DOM",
             "props": {
              "className": "interact-flex-row interact-widget"
             },
             "type": "node"
            }
           }
          },
          "systemjs_options": null
         },
         "nodeType": "Scope",
         "props": {},
         "type": "node"
        }
       ],
       "instanceArgs": {
        "namespace": "html",
        "tag": "div"
       },
       "nodeType": "DOM",
       "props": {},
       "type": "node"
      },
      "text/html": [
       "<div\n",
       "    class=\"webio-mountpoint\"\n",
       "    data-webio-mountpoint=\"665584157919697775\"\n",
       ">\n",
       "    <script>\n",
       "    if (window.require && require.defined && require.defined(\"nbextensions/webio-jupyter-notebook\")) {\n",
       "        console.log(\"Jupyter WebIO extension detected, not mounting.\");\n",
       "    } else if (window.WebIO) {\n",
       "        WebIO.mount(\n",
       "            document.querySelector('[data-webio-mountpoint=\"665584157919697775\"]'),\n",
       "            {\"props\":{},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"div\"},\"children\":[{\"props\":{\"className\":\"field interact-widget\"},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"div\"},\"children\":[{\"props\":{},\"nodeType\":\"Scope\",\"type\":\"node\",\"instanceArgs\":{\"imports\":{\"data\":[{\"name\":\"knockout\",\"type\":\"js\",\"url\":\"\\/assetserver\\/2618192f019dfcc40a9013ef31cb09a511d8ea26-knockout.js\"},{\"name\":\"knockout_punches\",\"type\":\"js\",\"url\":\"\\/assetserver\\/df29ad18e8884e98d1d36dd0c339f642f729bf96-knockout_punches.js\"},{\"name\":null,\"type\":\"js\",\"url\":\"\\/assetserver\\/860bb4a9e1927248d6fb4a7d59e926f541e3bfc2-all.js\"},{\"name\":null,\"type\":\"css\",\"url\":\"\\/assetserver\\/4b164c07c3632d5e274899a8ab8726c70dab4aff-style.css\"},{\"name\":null,\"type\":\"css\",\"url\":\"\\/assetserver\\/67252656a23d4f0f6f4ba7ab8e8eb9ffc4ae9b5d-bulma_confined.min.css\"}],\"type\":\"async_block\"},\"id\":\"12019567677823032763\",\"handlers\":{\"changes\":[\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\"],\"index\":[\"(function (val){return (val!=this.model[\\\"index\\\"]()) ? (this.valueFromJulia[\\\"index\\\"]=true, this.model[\\\"index\\\"](val)) : undefined})\"]},\"systemjs_options\":null,\"mount_callbacks\":[\"function () {\\n    var handler = (function (ko, koPunches) {\\n    ko.punches.enableAll();\\n    ko.bindingHandlers.numericValue = {\\n        init: function(element, valueAccessor, allBindings, data, context) {\\n            var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n            stringified.subscribe(function(value) {\\n                var val = parseFloat(value);\\n                if (!isNaN(val)) {\\n                    valueAccessor()(val);\\n                }\\n            });\\n            valueAccessor().subscribe(function(value) {\\n                var str = JSON.stringify(value);\\n                if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n                     return;\\n                 if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n                     return;\\n                stringified(str);\\n            });\\n            ko.applyBindingsToNode(\\n                element,\\n                {\\n                    value: stringified,\\n                    valueUpdate: allBindings.get('valueUpdate'),\\n                },\\n                context,\\n            );\\n        }\\n    };\\n    var json_data = {\\\"formatted_vals\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"10\\\",\\\"11\\\",\\\"12\\\",\\\"13\\\",\\\"14\\\",\\\"15\\\",\\\"16\\\"],\\\"changes\\\":WebIO.getval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"12019567677823032763\\\",\\\"id\\\":\\\"ob_18\\\",\\\"type\\\":\\\"observable\\\"}),\\\"index\\\":WebIO.getval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"12019567677823032763\\\",\\\"id\\\":\\\"ob_17\\\",\\\"type\\\":\\\"observable\\\"})};\\n    var self = this;\\n    function AppViewModel() {\\n        for (var key in json_data) {\\n            var el = json_data[key];\\n            this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n        }\\n        \\n        [this[\\\"formatted_val\\\"]=ko.computed(    function(){\\n        return this.formatted_vals()[parseInt(this.index())-(1)];\\n    }\\n,this)]\\n        [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"12019567677823032763\\\",\\\"id\\\":\\\"ob_18\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"index\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"index\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"12019567677823032763\\\",\\\"id\\\":\\\"ob_17\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"index\\\"]=false}),self)]\\n        \\n    }\\n    self.model = new AppViewModel();\\n    self.valueFromJulia = {};\\n    for (var key in json_data) {\\n        self.valueFromJulia[key] = false;\\n    }\\n    ko.applyBindings(self.model, self.dom);\\n}\\n);\\n    (WebIO.importBlock({\\\"data\\\":[{\\\"name\\\":\\\"knockout\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"\\/assetserver\\/2618192f019dfcc40a9013ef31cb09a511d8ea26-knockout.js\\\"},{\\\"name\\\":\\\"knockout_punches\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"\\/assetserver\\/df29ad18e8884e98d1d36dd0c339f642f729bf96-knockout_punches.js\\\"}],\\\"type\\\":\\\"async_block\\\"})).then((imports) => handler.apply(this, imports));\\n}\\n\"],\"observables\":{\"changes\":{\"sync\":false,\"id\":\"ob_18\",\"value\":0},\"index\":{\"sync\":true,\"id\":\"ob_17\",\"value\":8}}},\"children\":[{\"props\":{\"className\":\"interact-flex-row interact-widget\"},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"div\"},\"children\":[{\"props\":{\"className\":\"interact-flex-row-left\"},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"div\"},\"children\":[{\"props\":{\"className\":\"interact \",\"style\":{\"padding\":\"5px 10px 0px 10px\"}},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"label\"},\"children\":[\"i\"]}]},{\"props\":{\"className\":\"interact-flex-row-center\"},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"div\"},\"children\":[{\"props\":{\"max\":16,\"min\":1,\"attributes\":{\"type\":\"range\",\"data-bind\":\"numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}\",\"orient\":\"horizontal\"},\"step\":1,\"className\":\"slider slider is-fullwidth\",\"style\":{}},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"input\"},\"children\":[]}]},{\"props\":{\"className\":\"interact-flex-row-right\"},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"div\"},\"children\":[{\"props\":{\"attributes\":{\"data-bind\":\"text: formatted_val\"}},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"p\"},\"children\":[]}]}]}]}]},{\"props\":{},\"nodeType\":\"Scope\",\"type\":\"node\",\"instanceArgs\":{\"imports\":{\"data\":[],\"type\":\"async_block\"},\"id\":\"8069079533259214757\",\"handlers\":{},\"systemjs_options\":null,\"mount_callbacks\":[],\"observables\":{\"obs-node\":{\"sync\":false,\"id\":\"ob_22\",\"value\":{\"props\":{\"className\":\"interact-flex-row interact-widget\"},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"div\"},\"children\":[{\"props\":{\"setInnerHtml\":\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\n<svg xmlns=\\\"http:\\/\\/www.w3.org\\/2000\\/svg\\\" xmlns:xlink=\\\"http:\\/\\/www.w3.org\\/1999\\/xlink\\\" width=\\\"600\\\" height=\\\"400\\\" viewBox=\\\"0 0 2400 1600\\\">\\n<defs>\\n  <clipPath id=\\\"clip3400\\\">\\n    <rect x=\\\"0\\\" y=\\\"0\\\" width=\\\"2400\\\" height=\\\"1600\\\"\\/>\\n  <\\/clipPath>\\n<\\/defs>\\n<path clip-path=\\\"url(#clip3400)\\\" d=\\\"\\nM0 1600 L2400 1600 L2400 0 L0 0  Z\\n  \\\" fill=\\\"#ffffff\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\"\\/>\\n<defs>\\n  <clipPath id=\\\"clip3401\\\">\\n    <rect x=\\\"480\\\" y=\\\"0\\\" width=\\\"1681\\\" height=\\\"1600\\\"\\/>\\n  <\\/clipPath>\\n<\\/defs>\\n<path clip-path=\\\"url(#clip3400)\\\" d=\\\"\\nM513.14 1487.47 L1953.37 1487.47 L1953.37 47.2441 L513.14 47.2441  Z\\n  \\\" fill=\\\"#ffffff\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\"\\/>\\n<defs>\\n  <clipPath id=\\\"clip3402\\\">\\n    <rect x=\\\"513\\\" y=\\\"47\\\" width=\\\"1441\\\" height=\\\"1441\\\"\\/>\\n  <\\/clipPath>\\n<\\/defs>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  667.127,47.2441 667.127,1487.47 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  893.578,47.2441 893.578,1487.47 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  1120.03,47.2441 1120.03,1487.47 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  1346.48,47.2441 1346.48,1487.47 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  1572.93,47.2441 1572.93,1487.47 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  1799.38,47.2441 1799.38,1487.47 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  513.14,201.231 1953.37,201.231 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  513.14,427.682 1953.37,427.682 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  513.14,654.134 1953.37,654.134 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  513.14,880.585 1953.37,880.585 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  513.14,1107.04 1953.37,1107.04 \\n  \\\"\\/>\\n<polyline clip-path=\\\"url(#clip3402)\\\" style=\\\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\\\" points=\\\"\\n  513.14,1333.49 1953.37,1333.49 \\n  \\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M547.127 81.231 L547.127 321.231 L787.127 321.231 L787.127 81.231 L547.127 81.231 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M773.578 81.231 L773.578 321.231 L1013.58 321.231 L1013.58 81.231 L773.578 81.231 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1000.03 81.231 L1000.03 321.231 L1240.03 321.231 L1240.03 81.231 L1000.03 81.231 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1226.48 81.231 L1226.48 321.231 L1466.48 321.231 L1466.48 81.231 L1226.48 81.231 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1452.93 81.231 L1452.93 321.231 L1692.93 321.231 L1692.93 81.231 L1452.93 81.231 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1679.38 81.231 L1679.38 321.231 L1919.38 321.231 L1919.38 81.231 L1679.38 81.231 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M547.127 307.682 L547.127 547.682 L787.127 547.682 L787.127 307.682 L547.127 307.682 Z\\\" fill=\\\"#ffffff\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M773.578 307.682 L773.578 547.682 L1013.58 547.682 L1013.58 307.682 L773.578 307.682 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1000.03 307.682 L1000.03 547.682 L1240.03 547.682 L1240.03 307.682 L1000.03 307.682 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1226.48 307.682 L1226.48 547.682 L1466.48 547.682 L1466.48 307.682 L1226.48 307.682 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1452.93 307.682 L1452.93 547.682 L1692.93 547.682 L1692.93 307.682 L1452.93 307.682 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1679.38 307.682 L1679.38 547.682 L1919.38 547.682 L1919.38 307.682 L1679.38 307.682 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M547.127 534.134 L547.127 774.134 L787.127 774.134 L787.127 534.134 L547.127 534.134 Z\\\" fill=\\\"#ffffff\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M773.578 534.134 L773.578 774.134 L1013.58 774.134 L1013.58 534.134 L773.578 534.134 Z\\\" fill=\\\"#ffffff\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1000.03 534.134 L1000.03 774.134 L1240.03 774.134 L1240.03 534.134 L1000.03 534.134 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1226.48 534.134 L1226.48 774.134 L1466.48 774.134 L1466.48 534.134 L1226.48 534.134 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1452.93 534.134 L1452.93 774.134 L1692.93 774.134 L1692.93 534.134 L1452.93 534.134 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1679.38 534.134 L1679.38 774.134 L1919.38 774.134 L1919.38 534.134 L1679.38 534.134 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M547.127 760.585 L547.127 1000.59 L787.127 1000.59 L787.127 760.585 L547.127 760.585 Z\\\" fill=\\\"#ffffff\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M773.578 760.585 L773.578 1000.59 L1013.58 1000.59 L1013.58 760.585 L773.578 760.585 Z\\\" fill=\\\"#ffffff\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1000.03 760.585 L1000.03 1000.59 L1240.03 1000.59 L1240.03 760.585 L1000.03 760.585 Z\\\" fill=\\\"#ff0000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1226.48 760.585 L1226.48 1000.59 L1466.48 1000.59 L1466.48 760.585 L1226.48 760.585 Z\\\" fill=\\\"#ff0000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1452.93 760.585 L1452.93 1000.59 L1692.93 1000.59 L1692.93 760.585 L1452.93 760.585 Z\\\" fill=\\\"#ff0000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1679.38 760.585 L1679.38 1000.59 L1919.38 1000.59 L1919.38 760.585 L1679.38 760.585 Z\\\" fill=\\\"#ff0000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M547.127 987.036 L547.127 1227.04 L787.127 1227.04 L787.127 987.036 L547.127 987.036 Z\\\" fill=\\\"#ffffff\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M773.578 987.036 L773.578 1227.04 L1013.58 1227.04 L1013.58 987.036 L773.578 987.036 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1000.03 987.036 L1000.03 1227.04 L1240.03 1227.04 L1240.03 987.036 L1000.03 987.036 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1226.48 987.036 L1226.48 1227.04 L1466.48 1227.04 L1466.48 987.036 L1226.48 987.036 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1452.93 987.036 L1452.93 1227.04 L1692.93 1227.04 L1692.93 987.036 L1452.93 987.036 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1679.38 987.036 L1679.38 1227.04 L1919.38 1227.04 L1919.38 987.036 L1679.38 987.036 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M547.127 1213.49 L547.127 1453.49 L787.127 1453.49 L787.127 1213.49 L547.127 1213.49 Z\\\" fill=\\\"#ffffff\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"#000000\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"3.2\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M773.578 1213.49 L773.578 1453.49 L1013.58 1453.49 L1013.58 1213.49 L773.578 1213.49 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1000.03 1213.49 L1000.03 1453.49 L1240.03 1453.49 L1240.03 1213.49 L1000.03 1213.49 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1226.48 1213.49 L1226.48 1453.49 L1466.48 1453.49 L1466.48 1213.49 L1226.48 1213.49 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1452.93 1213.49 L1452.93 1453.49 L1692.93 1453.49 L1692.93 1213.49 L1452.93 1213.49 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<path clip-path=\\\"url(#clip3402)\\\" d=\\\"M1679.38 1213.49 L1679.38 1453.49 L1919.38 1453.49 L1919.38 1213.49 L1679.38 1213.49 Z\\\" fill=\\\"#000000\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"1\\\" stroke=\\\"none\\\"\\/>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 667.127, 231.731)\\\" x=\\\"667.127\\\" y=\\\"231.731\\\">0.6<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 893.578, 231.731)\\\" x=\\\"893.578\\\" y=\\\"231.731\\\">0.72<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1120.03, 231.731)\\\" x=\\\"1120.03\\\" y=\\\"231.731\\\">0.05<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1346.48, 231.731)\\\" x=\\\"1346.48\\\" y=\\\"231.731\\\">0.66<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1572.93, 231.731)\\\" x=\\\"1572.93\\\" y=\\\"231.731\\\">0.18<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1799.38, 231.731)\\\" x=\\\"1799.38\\\" y=\\\"231.731\\\">0.86<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 667.127, 458.182)\\\" x=\\\"667.127\\\" y=\\\"458.182\\\">-0.0<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 893.578, 458.182)\\\" x=\\\"893.578\\\" y=\\\"458.182\\\">0.06<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1120.03, 458.182)\\\" x=\\\"1120.03\\\" y=\\\"458.182\\\">0.93<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1346.48, 458.182)\\\" x=\\\"1346.48\\\" y=\\\"458.182\\\">0.2<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1572.93, 458.182)\\\" x=\\\"1572.93\\\" y=\\\"458.182\\\">0.73<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1799.38, 458.182)\\\" x=\\\"1799.38\\\" y=\\\"458.182\\\">-0.18<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 667.127, 684.634)\\\" x=\\\"667.127\\\" y=\\\"684.634\\\">-0.0<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 893.578, 684.634)\\\" x=\\\"893.578\\\" y=\\\"684.634\\\">0.0<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1120.03, 684.634)\\\" x=\\\"1120.03\\\" y=\\\"684.634\\\">0.4<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1346.48, 684.634)\\\" x=\\\"1346.48\\\" y=\\\"684.634\\\">0.23<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1572.93, 684.634)\\\" x=\\\"1572.93\\\" y=\\\"684.634\\\">1.2<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1799.38, 684.634)\\\" x=\\\"1799.38\\\" y=\\\"684.634\\\">-0.04<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 667.127, 911.085)\\\" x=\\\"667.127\\\" y=\\\"911.085\\\">0.0<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 893.578, 911.085)\\\" x=\\\"893.578\\\" y=\\\"911.085\\\">0.0<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1120.03, 911.085)\\\" x=\\\"1120.03\\\" y=\\\"911.085\\\">-5.25<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1346.48, 911.085)\\\" x=\\\"1346.48\\\" y=\\\"911.085\\\">-0.81<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1572.93, 911.085)\\\" x=\\\"1572.93\\\" y=\\\"911.085\\\">-4.35<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1799.38, 911.085)\\\" x=\\\"1799.38\\\" y=\\\"911.085\\\">1.33<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 667.127, 1137.54)\\\" x=\\\"667.127\\\" y=\\\"1137.54\\\">0.0<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 893.578, 1137.54)\\\" x=\\\"893.578\\\" y=\\\"1137.54\\\">-0.35<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1120.03, 1137.54)\\\" x=\\\"1120.03\\\" y=\\\"1137.54\\\">-0.0<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1346.48, 1137.54)\\\" x=\\\"1346.48\\\" y=\\\"1137.54\\\">-0.45<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1572.93, 1137.54)\\\" x=\\\"1572.93\\\" y=\\\"1137.54\\\">0.51<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1799.38, 1137.54)\\\" x=\\\"1799.38\\\" y=\\\"1137.54\\\">-0.89<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 667.127, 1363.99)\\\" x=\\\"667.127\\\" y=\\\"1363.99\\\">0.0<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 893.578, 1363.99)\\\" x=\\\"893.578\\\" y=\\\"1363.99\\\">-0.28<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1120.03, 1363.99)\\\" x=\\\"1120.03\\\" y=\\\"1363.99\\\">0.03<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1346.48, 1363.99)\\\" x=\\\"1346.48\\\" y=\\\"1363.99\\\">-0.28<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1572.93, 1363.99)\\\" x=\\\"1572.93\\\" y=\\\"1363.99\\\">0.7<\\/text>\\n<\\/g>\\n<g clip-path=\\\"url(#clip3400)\\\">\\n<text style=\\\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\\\" transform=\\\"rotate(0, 1799.38, 1363.99)\\\" x=\\\"1799.38\\\" y=\\\"1363.99\\\">0.51<\\/text>\\n<\\/g>\\n<\\/svg>\\n\"},\"nodeType\":\"DOM\",\"type\":\"node\",\"instanceArgs\":{\"namespace\":\"html\",\"tag\":\"div\"},\"children\":[]}]}}}},\"children\":[{\"props\":{},\"nodeType\":\"ObservableNode\",\"type\":\"node\",\"instanceArgs\":{\"id\":\"ob_22\",\"name\":\"obs-node\"},\"children\":[]}]}]},\n",
       "            window,\n",
       "        );\n",
       "    } else {\n",
       "        document\n",
       "            .querySelector('[data-webio-mountpoint=\"665584157919697775\"]')\n",
       "            .innerHTML = (\n",
       "                '<div style=\"padding: 1em; background-color: #f8d6da; border: 1px solid #f5c6cb\">' +\n",
       "                '<p><strong>WebIO not detected.</strong></p>' +\n",
       "                '<p>Please read ' +\n",
       "                '<a href=\"https://juliagizmos.github.io/WebIO.jl/latest/troubleshooting/not-detected/\" target=\"_blank\">the troubleshooting guide</a> ' +\n",
       "                'for more information on how to resolve this issue.</p>' +\n",
       "                '<p><a href=\"https://juliagizmos.github.io/WebIO.jl/latest/troubleshooting/not-detected/\" target=\"_blank\">https://juliagizmos.github.io/WebIO.jl/latest/troubleshooting/not-detected/</a></p>' +\n",
       "                '</div>'\n",
       "            );\n",
       "    }\n",
       "    </script>\n",
       "</div>\n"
      ],
      "text/plain": [
       "Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Scope(Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Node{WebIO.DOM}(WebIO.DOM(:html, :label), Any[\"i\"], Dict{Symbol,Any}(:className => \"interact \",:style => Dict{Any,Any}(:padding => \"5px 10px 0px 10px\")))], Dict{Symbol,Any}(:className => \"interact-flex-row-left\")), Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Node{WebIO.DOM}(WebIO.DOM(:html, :input), Any[], Dict{Symbol,Any}(:max => 16,:min => 1,:attributes => Dict{Any,Any}(:type => \"range\",Symbol(\"data-bind\") => \"numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}\",\"orient\" => \"horizontal\"),:step => 1,:className => \"slider slider is-fullwidth\",:style => Dict{Any,Any}()))], Dict{Symbol,Any}(:className => \"interact-flex-row-center\")), Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Node{WebIO.DOM}(WebIO.DOM(:html, :p), Any[], Dict{Symbol,Any}(:attributes => Dict(\"data-bind\" => \"text: formatted_val\")))], Dict{Symbol,Any}(:className => \"interact-flex-row-right\"))], Dict{Symbol,Any}(:className => \"interact-flex-row interact-widget\")), Dict{String,Tuple{Observables.AbstractObservable,Union{Nothing, Bool}}}(\"changes\" => (Observable{Int64} with 1 listeners. Value:\n",
       "0, nothing),\"index\" => (Observable{Int64} with 2 listeners. Value:\n",
       "8, nothing)), Set(String[]), nothing, Asset[Asset(\"js\", \"knockout\", \"/Users/alanedelman/.julia/packages/Knockout/1sDlc/src/../assets/knockout.js\"), Asset(\"js\", \"knockout_punches\", \"/Users/alanedelman/.julia/packages/Knockout/1sDlc/src/../assets/knockout_punches.js\"), Asset(\"js\", nothing, \"/Users/alanedelman/.julia/packages/InteractBase/9mFwe/src/../assets/all.js\"), Asset(\"css\", nothing, \"/Users/alanedelman/.julia/packages/InteractBase/9mFwe/src/../assets/style.css\"), Asset(\"css\", nothing, \"/Users/alanedelman/.julia/packages/Interact/SbgIk/src/../assets/bulma_confined.min.css\")], Dict{Any,Any}(\"changes\" => Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")],\"index\" => Any[WebIO.JSString(\"(function (val){return (val!=this.model[\\\"index\\\"]()) ? (this.valueFromJulia[\\\"index\\\"]=true, this.model[\\\"index\\\"](val)) : undefined})\")]), WebIO.ConnectionPool(Channel{Any}(sz_max:32,sz_curr:0), Set(AbstractConnection[]), Base.GenericCondition{Base.AlwaysLockedST}(Base.InvasiveLinkedList{Task}(Task (runnable) @0x000000011760e650, Task (runnable) @0x000000011760e650), Base.AlwaysLockedST(1))), WebIO.JSString[WebIO.JSString(\"function () {\\n    var handler = (function (ko, koPunches) {\\n    ko.punches.enableAll();\\n    ko.bindingHandlers.numericValue = {\\n        init: function(element, valueAccessor, allBindings, data, context) {\\n            var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n            stringified.subscribe(function(value) {\\n                var val = parseFloat(value);\\n                if (!isNaN(val)) {\\n                    valueAccessor()(val);\\n                }\\n            });\\n            valueAccessor().subscribe(function(value) {\\n                var str = JSON.stringify(value);\\n                if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n                     return;\\n                 if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n                     return;\\n                stringified(str);\\n            });\\n            ko.applyBindingsToNode(\\n                element,\\n                {\\n                    value: stringified,\\n                    valueUpdate: allBindings.get('valueUpdate'),\\n                },\\n                context,\\n            );\\n        }\\n    };\\n    var json_data = {\\\"formatted_vals\\\":[\\\"1\\\",\\\"2\\\",\\\"3\\\",\\\"4\\\",\\\"5\\\",\\\"6\\\",\\\"7\\\",\\\"8\\\",\\\"9\\\",\\\"10\\\",\\\"11\\\",\\\"12\\\",\\\"13\\\",\\\"14\\\",\\\"15\\\",\\\"16\\\"],\\\"changes\\\":WebIO.getval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"12019567677823032763\\\",\\\"id\\\":\\\"ob_18\\\",\\\"type\\\":\\\"observable\\\"}),\\\"index\\\":WebIO.getval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"12019567677823032763\\\",\\\"id\\\":\\\"ob_17\\\",\\\"type\\\":\\\"observable\\\"})};\\n    var self = this;\\n    function AppViewModel() {\\n        for (var key in json_data) {\\n            var el = json_data[key];\\n            this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n        }\\n        \\n        [this[\\\"formatted_val\\\"]=ko.computed(    function(){\\n        return this.formatted_vals()[parseInt(this.index())-(1)];\\n    }\\n,this)]\\n        [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"12019567677823032763\\\",\\\"id\\\":\\\"ob_18\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"index\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"index\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"12019567677823032763\\\",\\\"id\\\":\\\"ob_17\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"index\\\"]=false}),self)]\\n        \\n    }\\n    self.model = new AppViewModel();\\n    self.valueFromJulia = {};\\n    for (var key in json_data) {\\n        self.valueFromJulia[key] = false;\\n    }\\n    ko.applyBindings(self.model, self.dom);\\n}\\n);\\n    (WebIO.importBlock({\\\"data\\\":[{\\\"name\\\":\\\"knockout\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/2618192f019dfcc40a9013ef31cb09a511d8ea26-knockout.js\\\"},{\\\"name\\\":\\\"knockout_punches\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/df29ad18e8884e98d1d36dd0c339f642f729bf96-knockout_punches.js\\\"}],\\\"type\\\":\\\"async_block\\\"})).then((imports) => handler.apply(this, imports));\\n}\\n\")])], Dict{Symbol,Any}(:className => \"field interact-widget\")), Observable{Any} with 0 listeners. Value:\n",
       "Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Plot{Plots.GRBackend() n=36}], Dict{Symbol,Any}(:className => \"interact-flex-row interact-widget\"))], Dict{Symbol,Any}())"
      ]
     },
     "execution_count": 29,
     "metadata": {
      "application/vnd.webio.node+json": {
       "kernelId": "0460c48b-c1ce-4198-9750-65eccae2357d"
      }
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@manipulate for i =1: length(keepA)\n",
    "    lookat( keepA[i], redrow=row[i])\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "using LinearAlgebra"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6×6 Array{Float64,2}:\n",
       " 0.601848  0.719816   0.0549105  0.664714   0.184826  0.856158\n",
       " 0.373551  0.503678   0.964187   0.613921   0.840482  0.349087\n",
       " 0.139154  0.146278   0.0863354  0.315124   0.982249  0.226666\n",
       " 0.176656  0.560782   0.473594   0.625323   0.164821  0.457171\n",
       " 0.919038  0.751709   0.0796167  0.569861   0.793574  0.418587\n",
       " 0.288685  0.0699438  0.0534446  0.0420711  0.788685  0.921932"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = keepA[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6×6 Array{Float64,2}:\n",
       "  0.601848     0.719816   0.0549105  0.664714   0.184826      0.856158 \n",
       " -5.55112e-17  0.0569073  0.930105   0.201351   0.725765     -0.182307 \n",
       " -1.96573e-17  0.0        0.403003   0.232736   1.19652      -0.0358447\n",
       "  8.46105e-17  0.0        0.0        2.22829   11.2549        0.858134 \n",
       "  3.25219e-17  0.0        0.0        0.0        0.685981     -0.537103 \n",
       "  3.55852e-18  0.0        0.0        0.0       -5.55112e-17   1.1249   "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "U = keepA[end]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6×6 Array{Float64,2}:\n",
       " 0.0        0.0         0.0      0.0       0.0       0.0\n",
       " 0.620673   0.0         0.0      0.0       0.0       0.0\n",
       " 0.231211  -0.354114    0.0      0.0       0.0       0.0\n",
       " 0.293522   6.14156   -13.0392   0.0       0.0       0.0\n",
       " 1.52703   -6.10589    14.0815  -1.11881   0.0       0.0\n",
       " 0.479664  -4.83816    11.2334  -0.860311  0.660471  0.0"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6×6 Array{Float64,2}:\n",
       " 1.0        0.0         0.0      0.0       0.0       0.0\n",
       " 0.620673   1.0         0.0      0.0       0.0       0.0\n",
       " 0.231211  -0.354114    1.0      0.0       0.0       0.0\n",
       " 0.293522   6.14156   -13.0392   1.0       0.0       0.0\n",
       " 1.52703   -6.10589    14.0815  -1.11881   1.0       0.0\n",
       " 0.479664  -4.83816    11.2334  -0.860311  0.660471  1.0"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L += I"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## First view of the LU decomposition"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6×6 Array{Float64,2}:\n",
       " 0.601848  0.719816   0.0549105  0.664714   0.184826  0.856158\n",
       " 0.373551  0.503678   0.964187   0.613921   0.840482  0.349087\n",
       " 0.139154  0.146278   0.0863354  0.315124   0.982249  0.226666\n",
       " 0.176656  0.560782   0.473594   0.625323   0.164821  0.457171\n",
       " 0.919038  0.751709   0.0796167  0.569861   0.793574  0.418587\n",
       " 0.288685  0.0699438  0.0534446  0.0420711  0.788685  0.921932"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6×6 Array{Float64,2}:\n",
       " 0.601848  0.719816   0.0549105  0.664714   0.184826  0.856158\n",
       " 0.373551  0.503678   0.964187   0.613921   0.840482  0.349087\n",
       " 0.139154  0.146278   0.0863354  0.315124   0.982249  0.226666\n",
       " 0.176656  0.560782   0.473594   0.625323   0.164821  0.457171\n",
       " 0.919038  0.751709   0.0796167  0.569861   0.793574  0.418587\n",
       " 0.288685  0.0699438  0.0534446  0.0420711  0.788685  0.921932"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L * U"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A ≈ L * U"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4×4 Array{Int64,2}:\n",
       "  2  12   4   7\n",
       " 29  12  69  24\n",
       "  7   7   7   7\n",
       "  3   7   5   2"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = [2 12 4 7; 29 12 69 24 ; 7 7 7 7; 3 7 5 2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4×4 Adjoint{Int64,Array{Int64,2}}:\n",
       "  2  29  7  3\n",
       " 12  12  7  7\n",
       "  4  69  7  5\n",
       "  7  24  7  2"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A'\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2×3 Array{Int64,2}:\n",
       " 1  2  3\n",
       " 4  5  6"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A= [ 1 2 3; 4 5 6]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×2 Adjoint{Int64,Array{Int64,2}}:\n",
       " 1  4\n",
       " 2  5\n",
       " 3  6"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A'\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Adjoint{Int64,Array{Int64,2}}\n",
      "  parent: Array{Int64}((2, 3)) [1 2 3; 4 5 6]\n"
     ]
    }
   ],
   "source": [
    "dump(A')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2×3×4 Array{Int64,3}:\n",
       "[:, :, 1] =\n",
       " 2  8  3\n",
       " 7  5  3\n",
       "\n",
       "[:, :, 2] =\n",
       " 7  5  8\n",
       " 3  4  5\n",
       "\n",
       "[:, :, 3] =\n",
       " 4  2  8\n",
       " 8  4  2\n",
       "\n",
       "[:, :, 4] =\n",
       " 8  3  8\n",
       " 7  4  9"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = rand( 1:9, 2,3,4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4×3×2 Array{Int64,3}:\n",
       "[:, :, 1] =\n",
       " 2  8  3\n",
       " 7  5  8\n",
       " 4  2  8\n",
       " 8  3  8\n",
       "\n",
       "[:, :, 2] =\n",
       " 7  5  3\n",
       " 3  4  5\n",
       " 8  4  2\n",
       " 7  4  9"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "permutedims(A, [3 2 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "ename": "DimensionMismatch",
     "evalue": "DimensionMismatch(\"matrix is not square: dimensions are (4, 6)\")",
     "output_type": "error",
     "traceback": [
      "DimensionMismatch(\"matrix is not square: dimensions are (4, 6)\")",
      "",
      "Stacktrace:",
      " [1] inv(::Array{Float64,2}) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.3/LinearAlgebra/src/LinearAlgebra.jl:221",
      " [2] top-level scope at In[47]:1"
     ]
    }
   ],
   "source": [
    "inv( rand(4,6))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " 0.961711  0.705796  0.334855 \n",
       " 0.825322  0.76569   0.0211825\n",
       " 0.22131   0.162853  0.357397 "
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = rand(3,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       " 0.466144  0.282758  0.176453 \n",
       " 0.804355  0.748308  0.9467   \n",
       " 0.764508  0.457893  0.0473501"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B = rand(3,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       "  110.378   -81.0345  -112.35  \n",
       " -191.261   138.822    201.288 \n",
       "   50.3087  -34.295    -57.3957"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inv( A*B )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3×3 Array{Float64,2}:\n",
       "  110.378   -81.0345  -112.35  \n",
       " -191.261   138.822    201.288 \n",
       "   50.3087  -34.295    -57.3957"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inv(B) * inv(A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1:10"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = 1:10\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10×10 Array{Int64,2}:\n",
       "  1   2   3   4   5   6   7   8   9   10\n",
       "  2   4   6   8  10  12  14  16  18   20\n",
       "  3   6   9  12  15  18  21  24  27   30\n",
       "  4   8  12  16  20  24  28  32  36   40\n",
       "  5  10  15  20  25  30  35  40  45   50\n",
       "  6  12  18  24  30  36  42  48  54   60\n",
       "  7  14  21  28  35  42  49  56  63   70\n",
       "  8  16  24  32  40  48  56  64  72   80\n",
       "  9  18  27  36  45  54  63  72  81   90\n",
       " 10  20  30  40  50  60  70  80  90  100"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x * x'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Int64,1}:\n",
       " 1\n",
       " 2\n",
       " 4\n",
       " 5"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x =[ 1 ,2 ,4, 5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Int64,1}:\n",
       " 2\n",
       " 4\n",
       " 6"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = [ 2, 4, 6]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4×3 Array{Int64,2}:\n",
       "  2   4   6\n",
       "  4   8  12\n",
       "  8  16  24\n",
       " 10  20  30"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x * y'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "@webio": {
   "lastCommId": "20e37d08220749748154c409ff8f06a0",
   "lastKernelId": "0460c48b-c1ce-4198-9750-65eccae2357d"
  },
  "kernelspec": {
   "display_name": "Julia 1.3.1",
   "language": "julia",
   "name": "julia-1.3"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "1.3.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
